﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DLL;
using BLL;

namespace QLCuaHang
{
    public partial class frmPhieuXuat : Form
    {
        string MaHD;
        PhieuXuatBLL px = new PhieuXuatBLL();
        public frmPhieuXuat()
        {
            InitializeComponent();
        }

        private void frmPhieuNhap_Load(object sender, EventArgs e)
        {
            if (frmDangNhap.quyen == 2)
            {
                btnThem.Enabled = false;
                btnSua.Enabled = false;
                btnXoa.Enabled = false;
            }
            LoadCbbMaNv();
            GridConfig();
            grvPhieuXuat.DataSource = px.Select_All();
        }
        private void GridConfig()
        {
            grvPhieuXuat.ModeColorRow = 1;
            grvPhieuXuat.SetColorRow(System.Drawing.Color.AliceBlue);
            grvPhieuXuat.AddColumns("TextBox", "MaHD", "Mã hóa đơn", 150, true, true, "MC", " ");
            grvPhieuXuat.AddColumns("TextBox", "TenHD", "Tên hóa đơn", 150, true, true, "ML", " ");
            grvPhieuXuat.AddColumns("TextBox", "NgayLap", "Ngày lập", 125, true, true, "ML", " ");
            grvPhieuXuat.AddColumns("TextBox", "MaNV", " Mã nhân viên", 150, true, true, "ML", " ");
            grvPhieuXuat.AddColumns("TextBox", "TenKH", "Tên khách hàng", 250, true, true, "ML", " ");
            grvPhieuXuat.AddColumns("TextBox", "ThanhTien", "Tổng tiền", 118, true, true, "MR", " ");
        }
        void LoadCbbMaNv()
        {
            for (int i = 0; i < px.SelectALL_MaNv().Rows.Count; i++)
            {
                NhanVienDAL nv = new NhanVienDAL();
                nv.MaNv = px.SelectALL_MaNv().Rows[i]["MaNv"].ToString();
                nv.TenNV = px.SelectALL_MaNv().Rows[i]["TenNV"].ToString();
                nv.HoDem = px.SelectALL_MaNv().Rows[i]["HoDem"].ToString();
                nv.NS = DateTime.Parse(px.SelectALL_MaNv().Rows[i]["NS"].ToString());
                nv.NG_VaoLam = DateTime.Parse(px.SelectALL_MaNv().Rows[i]["NG_VaoLam"].ToString());
                nv.DiaChi = px.SelectALL_MaNv().Rows[i]["DiaChi"].ToString();
                nv.DienThoai = px.SelectALL_MaNv().Rows[i]["MaNV"].ToString();
                nv.Luong = float.Parse(px.SelectALL_MaNv().Rows[i]["Luong"].ToString());
                nv.EMail = px.SelectALL_MaNv().Rows[i]["Mail"].ToString();
                nv.GT = px.SelectALL_MaNv().Rows[i]["GT"].ToString();
                cbbMaNv.Items.Add(nv);
            }
            cbbMaNv.DisplayMember = "MaNv";
            cbbMaNv.SelectedIndex = 0;

        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            #region
            if (txtTenPX.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tên phiếu xuất");
                txtTenPX.Focus();
                return;
            }
            if (txtMaKH.Text == "")
            {
                MessageBox.Show("bạn chưa nhập mã khách hàng");
                txtMaKH.Focus();
                return;
            }
            else
            {
                if (px.Kiemtra(txtMaKH.Text) == false)
                {
                    MessageBox.Show("Mã khách hàng ko đúng hoặc chưa tồn tại bạn kiểm tra lại mã");
                    return;
                }
            }
            #endregion
            if (px.Them(TaoPX()))
            {
                MessageBox.Show("Mời bạn nhập chi tiết cho hóa đơn");
                frmChiTietHD frmChiTietHD = new frmChiTietHD(MaHD);
                frmChiTietHD.ShowDialog();
                grvPhieuXuat.DataSource = px.Select_All();
                Xoa();
            }
            else
            {
                MessageBox.Show("Bạn chua thêm được hóa đơn");
            }
        }

        PhieuXuatDAL TaoPX()
        {
            PhieuXuatDAL px = new PhieuXuatDAL();
            px.MaHD = DLL.CommonFunc.GetPrimaryKey("HoaDon");
            MaHD = px.MaHD;
            px.MaKH = txtMaKH.Text;
            px.Ngaylap = dateNgayLap.Value;
            px.TenHD = txtTenPX.Text;
            px.MaNv = ((NhanVienDAL)cbbMaNv.SelectedItem).MaNv;
            return px;
        }
        PhieuXuatDAL PhieuXuat()
        {
            PhieuXuatDAL px = new PhieuXuatDAL();
            px.MaHD = txtMaPX.Text;
            px.MaKH = txtMaKH.Text;
            px.Ngaylap = dateNgayLap.Value;
            px.TenHD = txtTenPX.Text;
            px.MaNv = ((NhanVienDAL)cbbMaNv.SelectedItem).MaNv;
            return px;
        }

        void Xoa()
        {
            txtMaKH.Text = "";
            txtMaPX.Text = "";
            txtTenPX.Text = "";
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            #region
            if (txtMaPX.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập mã phiếu xuất");
                txtMaPX.Focus();
                return;
            }
            if (txtTenPX.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tên phiếu xuất");
                txtTenPX.Focus();
                return;
            }
            if (txtMaKH.Text == "")
            {
                MessageBox.Show("bạn chưa nhập mã khách hàng");
                txtMaKH.Focus();
                return;
            }
            else
            {
                if (px.Kiemtra(txtMaKH.Text) == false)
                {
                    MessageBox.Show("Mã khách hàng ko đúng hoặc chưa tồn tại bạn kiểm tra lại mã");
                    return;
                }
            }
            #endregion
            if (px.Sua(PhieuXuat()))
            {
                if (MessageBox.Show("Sửa thành công phiếu xuất bạn có muốn sửa chi tiết phiếu xuất ko ?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.No)
                    return;
                frmChiTietHD frmChiTietHD = new frmChiTietHD(txtMaPX.Text);
                frmChiTietHD.ShowDialog();
                grvPhieuXuat.DataSource = px.Select_All();
                Xoa();
            }
            else
            {
                MessageBox.Show("Bạn chua sửa được hóa đơn");
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            #region
            if (txtMaPX.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập mã phiếu xuất");
                txtMaPX.Focus();
                return;
            }
            #endregion
            if (MessageBox.Show("Bạn sẽ xóa cả hóa đơn và chi tiết hóa đơn ?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.No)
                return;
            if(px.Kiemtra(txtMaPX.Text))
            {
            if (px.Xoa(txtMaPX.Text))
            {
                MessageBox.Show("Bạn đã xóa thành công hóa đơn");
                grvPhieuXuat.DataSource = px.Select_All();
                Xoa();
            }
            else
            {
                MessageBox.Show("Bạn chua xóa được hóa đơn");
            }
            }
            else
            {
                MessageBox.Show("Hóa đơn ko tồn tại");
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void grvPhieuXuat_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int RowIndex = e.RowIndex;
            if (RowIndex > 0)
            {
                txtMaPX.Text = grvPhieuXuat.Rows[RowIndex].Cells["MaHD"].Value.ToString();
                txtTenPX.Text = grvPhieuXuat.Rows[RowIndex].Cells["TenHD"].Value.ToString();
                // txtMaKH.Text = grvPhieuXuat.Rows[RowIndex].Cells["MaKH"].Value.ToString();
                cbbMaNv.Text = grvPhieuXuat.Rows[RowIndex].Cells["MaNV"].Value.ToString();
                dateNgayLap.Value = DateTime.Parse(grvPhieuXuat.Rows[RowIndex].Cells["NgayLap"].Value.ToString());
                txtMaKH.Text = px.LayMaKH(grvPhieuXuat.Rows[RowIndex].Cells["MaHD"].Value.ToString());
            }
        }

        private void txtTimKiem_TextChanged(object sender, EventArgs e)
        {
            PhieuXuatDAL PX = new PhieuXuatDAL();
            PX.MaHD = txtTimKiem.Text;
            PX.TenHD = txtTimKiem.Text;
            PX.MaNv = txtTimKiem.Text;
            grvPhieuXuat.DataSource = px.Search(PX);
        }

        private void btnTimkiem_Click(object sender, EventArgs e)
        {
            if (txtTimKiem.Text == "")
            {
                MessageBox.Show("Bạn cần nhập thông tin để tìm kiếm");
                txtTimKiem.Focus();
                return;
            }
            PhieuXuatDAL PX = new PhieuXuatDAL();
            PX.MaHD = txtTimKiem.Text;
            PX.TenHD = txtTimKiem.Text;
            PX.MaNv = txtTimKiem.Text;
            grvPhieuXuat.DataSource = px.Search(PX);
        }

        private void grvPhieuXuat_DoubleClick(object sender, EventArgs e)
        {
            string MaPX = grvPhieuXuat.Rows[grvPhieuXuat.CurrentRow.Index].Cells["MaHD"].Value.ToString();
            frmChiTietHD frmcthd = new frmChiTietHD(MaPX);
            frmcthd.ShowDialog();
        }
    }
}
